package com.pattern.structure.facade;

/**
 * @author yangguanzan
 * @date 4/9/22
 * @description
 */
public class LetterWriterFacade {
    //邮件代写服务
    private ILetterWriter letterWriter = new LetterWriter();
    //邮局的邮费检查以及送信
    private PostOffice postOffice = new PostOffice();

    /**
     * 一个方法里不能写多个子系统的逻辑，需要遵循单一职责原则
     * 邮件代写服务
     * @param context
     * @param address
     * @param fee
     */
    public void writeLetterTakeToPostOffice(String context, String address, int fee) {
        //邮件代写服务:收取相应的服务费和邮费
        letterWriter.receiveFee(fee);
        //邮件代写服务:写信
        letterWriter.writeLetter(context);
        //邮件代写服务:根据地址贴邮票
        letterWriter.postStamp(address);
        //邮件代写服务:送到邮局
        letterWriter.sendPostOffice();
    }

    /**
     * 一个方法里只实现一个子系统的逻辑
     * 邮局的邮费检查以及送信
     */
    public void sendLetter() {
        //邮局：邮费检查
        postOffice.checkPostFee(letterWriter);
        //送信到目的地
        postOffice.sendLetter();
    }
}
